function add(str1, str2) {
  const [intStr1, decStr1] = str1.split('.');
  const [intStr2, decStr2] = str2.split('.');
  console.log(decStr1, decStr2);
  if (decStr1 && decStr2) {
    // 都有小数
    if (decStr1.length < decStr2.length) {
      for (let i = 0; i < decStr2.length - decStr1.length; i++) {
        str1 = str1 + '0';
      }
    } else {
      for (let i = 0; i < decStr1.length - decStr2.length; i++) {
        str1 = str2 + '0';
      }
    }
    console.log(str1, str2);
  } else if (decStr1 && !decStr2) {
    // str1 有小数
    str2 = str2 + '.';
    for (let i = 0; i < decStr1.length; i++) {
      str2 = str2 + '0';
    }
    console.log(str1, str2);
  } else if (!decStr1 && decStr2) {
    // str2有小数
    str1 = str1 + '.';
    for (let i = 0; i < decStr2.length; i++) {
      str1 = str1 + '0';
    }
    console.log(str1, str2);
  }
  let len1 = str1.length,
    len2 = str2.length;
  let i = len1 - 1,
    j = len2 - 1;
  let carry = 0;
  const res = [];
  console.log(i, j);
  while (i >= 0 || j >= 0) {
    console.log(str1[i], str2[j]);
    if (str1[i] === '.' && str2[j] === '.') {
      res.unshift('.');
    } else {
      let n1 = i >= 0 ? str1[i] - 0 : 0;
      let n2 = j >= 0 ? str2[j] - 0 : 0;
      let sum = n1 + n2 + carry;
      res.unshift(sum % 10);
      carry = Math.floor(sum / 10);
    }
    i--;
    j--;
    console.log(res);
  }
  if (carry) {
    res.unshift(carry);
  }
  return res.join('');
}

console.log(add('88.1', '22.90'));
